#pragma once

#include <iostream>
#include <stdio.h>
#include <sstream>
#include <time.h>


//这里的stdout可以修改，指定打印的文件描述符
// 日志类
#define INF 0
#define DBG 1
#define ERR 2

#define DEFAULT_LEVEL -1

#define LOG(level, format, ...)                                                            \
    do                                                                                     \
    {                                                                                      \
        if (DEFAULT_LEVEL > level)                                                         \
            break;                                                                         \
        time_t t = time(NULL);                                                             \
        struct tm *lt = localtime(&t);                                                     \
        char buf[32] = {0};                                                                \
        strftime(buf, 31, "%H:%M:%S", lt);                                                 \
        fprintf(stdout, "[%s %s:%d]" format "\n", buf, __FILE__, __LINE__, ##__VA_ARGS__); \
    } while (0)



//##__VA_ARGS__ 代指前面的不定参数

#define LOG_INF(format,...) LOG(INF,format,##__VA_ARGS__)
#define LOG_DBG(format,...) LOG(DBG,format,##__VA_ARGS__)
#define LOG_ERR(format,...) LOG(ERR,format,##__VA_ARGS__)